package com.yellowcong.controller;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;

/**
 * 创建日期:2018年4月6日<br/>
 * 代码创建:黄聪<br/>
 * 功能描述:<br/>
 */
@Controller
@Scope("prototype")
public class JSONController2 {

	/**
	 * 创建日期:2018年4月6日<br/>
	 * 代码创建:黄聪<br/>
	 * 功能描述:通过request的方式来获取到json数据<br/>
	 * @param jsonobject 这个是阿里的 fastjson对象
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/body/data", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	public String writeByBody(@RequestBody JSONObject jsonParam) {
		// 直接将json信息打印出来
		System.out.println(jsonParam.toJSONString());

		// 将获取的json数据封装一层，然后在给返回
		JSONObject result = new JSONObject();
		result.put("msg", "ok");
		result.put("method", "@ResponseBody");
		result.put("data", jsonParam);

		return result.toJSONString();
	}

	/**
	 * 创建日期:2018年4月6日<br/>
	 * 代码创建:黄聪<br/>
	 * 功能描述:通过HttpServletResponse 写json到客户端<br/>
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/resp/data", method = RequestMethod.POST)
	public void writeByResp(@RequestBody JSONObject jsonParam,HttpServletResponse resp) {
		
		// 将获取的json数据封装一层，然后在给返回
		JSONObject result = new JSONObject();
		result.put("msg", "ok");
		result.put("method", "HttpServletResponse");
		result.put("data", jsonParam);
		
		//写json数据到客户端
		this.writeJson(resp, result);
	}
	
	/**
	 * 创建日期:2018年4月6日<br/>
	 * 代码创建:黄聪<br/>
	 * 功能描述:写数据到浏览器上<br/>
	 * @param resp
	 * @param json
	 */
	public void writeJson(HttpServletResponse resp ,JSONObject json ){
		PrintWriter out = null;
		try {
			//设定类容为json的格式
			resp.setContentType("application/json;charset=UTF-8");
			out = resp.getWriter();
			//写到客户端
			out.write(json.toJSONString());
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(out != null){
				out.close();
			}
		}
	}
}
